home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1995-09-10 | 1.5 KB | 65 lines | [TEXT/MPS ] |
- IMPLEMENTATION MODULE LocLib;
- (* Copyright: © 1990 by Keith Nemitz, all rights reserved. *)
- FROM SYSTEM IMPORT ADR;
-
- FROM MacTypes IMPORT OSErr;
- FROM FileManager IMPORT PBHGetVInfo,HParamBlockRec;
-
- PROCEDURE FreeSpaceOnVol(vRef:INTEGER; VAR freeBytes:LONGINT): OSErr;
- VAR
- freeBlocks :LONGINT;
- HPB :HParamBlockRec;
- err :OSErr;
- BEGIN
- freeBytes := 0;
- WITH HPB DO (* set up parameter block for the PBGetVInfo call *)
- ioNamePtr := NIL; (* we don’t care about the name *)
- ioVRefNum := vRef; (* this was passed in as a parameter *)
- ioVolIndex := 0; (* use ioVRefNum only *)
- END; (*with*)
- err := PBHGetVInfo(ADR(HPB),FALSE);
-
- IF err = 0 THEN
- freeBlocks := VAL(LONGINT,VAL(CARDINAL,HPB.ioVFrBlk));
- freeBytes := freeBlocks * HPB.ioVAlBlkSiz;
- END;
- RETURN err;
- END FreeSpaceOnVol;
-
-
-
- PROCEDURE BinarySearch(min,max:CARDINAL):CARDINAL;
- VAR
- indx :CARDINAL;
- n :INTEGER;
- BEGIN
- IF max < min THEN RETURN 0; END;
-
- indx := (min+max) DIV 2;
- n := theSearcher(indx);
- IF n = 0 THEN (* theSearchX matches (indx)^. *)
- RETURN indx;
- ELSIF n < 0 THEN (* theSearchX preceeds (indx)^. *)
- RETURN BinarySearch(min,indx-1);
- ELSE (* theSearchX follows (indx)^. *)
- RETURN BinarySearch(indx+1,max);
- END;
- END BinarySearch;
-
-
- PROCEDURE CopyStr(max :INTEGER; VAR src,dst :ARRAY OF CHAR);
- VAR i :INTEGER;
- BEGIN
- IF HIGH(src) < max THEN
- max := HIGH(src);
- END;
- IF HIGH(dst) < max THEN
- max := HIGH(dst);
- END;
- FOR i := 0 TO max DO
- dst[i] := src[i];
- END;(*for*)
- END CopyStr;
-
- END LocLib.
-